/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package DataAccessObject;

import BusinessEntity.BE_CasoPruebaEstimacion;
import BusinessEntity.BE_Sistema;
import BusinessLogic.BL_Sistema;
import Comun.Conexion;
import java.sql.CallableStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

/**
 *
 * @author kuntouch
 */
public class DA_CasoPruebaEstimacion {
 
    Conexion con;
    ResultSet rs;
    CallableStatement declaracion;

    private static DA_CasoPruebaEstimacion pinstancia=null;

    public static DA_CasoPruebaEstimacion obtenerInstancia()
    {
      if (pinstancia==null)
      {
          pinstancia=new DA_CasoPruebaEstimacion();
      }
      return pinstancia;
    }
    
    public void registrarCasoPruebaEstimacion(BE_CasoPruebaEstimacion objCasoPruebaEstimacion) throws InstantiationException, IllegalAccessException, SQLException{

        con = Conexion.ObtenerInstancia();
       
        try {
            con.IniciarConexion();
            String strProcedure = "{call registrarCasoPruebaEstimacion(?,?,?,?) }";
            declaracion = con.preparaLlamada(strProcedure);
            declaracion.setString(1, objCasoPruebaEstimacion.getStrNombre());
            declaracion.setString(2, objCasoPruebaEstimacion.getStrDescripcion());
            declaracion.setInt(3, objCasoPruebaEstimacion.getObjBE_Estimacion().getIdEstimacion());
            declaracion.setInt(4, objCasoPruebaEstimacion.getObjBE_Sistema().getObjSubsistema().getIdSistema());
            declaracion.execute();
            
   
        } catch (SQLException exception) {
            System.out.println("error: " + exception.getMessage());
            exception.printStackTrace();
        } finally {
            con.CerrarConexion();
    
        }
    
}
    
        public ArrayList<BE_CasoPruebaEstimacion> listaCasosPruebaEstimacion(int intIdRequerimiento) throws InstantiationException, IllegalAccessException, SQLException{

        con = Conexion.ObtenerInstancia();
        ArrayList<BE_CasoPruebaEstimacion> aobjBE_CasoPruebaEstimaciones = new ArrayList<BE_CasoPruebaEstimacion>();    
         ArrayList<BE_CasoPruebaEstimacion> aobjCasoPruebaEstimaciones = new ArrayList<BE_CasoPruebaEstimacion>();
        try {
            con.IniciarConexion();
            String strProcedure = "{call obtenerCasosPruebaEstimacion(?) }";
            declaracion = con.preparaLlamada(strProcedure);
            declaracion.setInt(1, intIdRequerimiento);
            declaracion.execute();
            rs = declaracion.getResultSet();
            
            while(rs.next()){
                BE_CasoPruebaEstimacion objBE_CasoPruebaEstimacion = new BE_CasoPruebaEstimacion();
                
                objBE_CasoPruebaEstimacion.setIdCasoPruebaEstimacion(rs.getInt("codigo"));
                objBE_CasoPruebaEstimacion.setStrNombre(rs.getString("nombre"));
                objBE_CasoPruebaEstimacion.setStrDescripcion(rs.getString("Descripcion"));
                
                BE_Sistema objBE_Sistema = new BE_Sistema();
                objBE_Sistema.setIdSistema(rs.getInt("idSistema"));
                objBE_CasoPruebaEstimacion.setObjBE_Sistema(objBE_Sistema);
                
                aobjBE_CasoPruebaEstimaciones.add(objBE_CasoPruebaEstimacion);
                
            }
           

            
   
        } catch (SQLException exception) {
            System.out.println("error: " + exception.getMessage());
            exception.printStackTrace();
        } finally {
            con.CerrarConexion();
    
        }
        for (BE_CasoPruebaEstimacion objBE_CasoPruebaEstimacion : aobjBE_CasoPruebaEstimaciones) {
                BE_CasoPruebaEstimacion objCasoPruebaEstimacion = new BE_CasoPruebaEstimacion();
                objCasoPruebaEstimacion = objBE_CasoPruebaEstimacion;
                
                BE_Sistema objBE_Sistema = new BE_Sistema();
                objBE_Sistema = BL_Sistema.obtenerInstancia().obtenerSistemaId(objBE_CasoPruebaEstimacion.getObjBE_Sistema().getIdSistema());
                objCasoPruebaEstimacion.setObjBE_Sistema(objBE_Sistema);
                aobjCasoPruebaEstimaciones.add(objCasoPruebaEstimacion);
                
            }
    return aobjCasoPruebaEstimaciones;
}
}
